package com.example.academic_affairs_system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.academic_affairs_system.common.RPage;
import com.example.academic_affairs_system.model.dto.PageDTO;
import com.example.academic_affairs_system.model.dto.studentCourses.StudentCoursesDTO;
import com.example.academic_affairs_system.model.dto.studentCourses.StudentCoursesPageDTO;
import com.example.academic_affairs_system.model.entity.AasStudentCourses;
import com.example.academic_affairs_system.model.vo.studentCourses.StudentCoursesVO;

import java.util.Collection;
import java.util.List;

/**
 * 学生和课表的关联数据，用于登记学生的课程成绩 服务类
 *
 * @author hjx
 * @since 2023-01-31
 */
public interface IAasStudentCoursesService extends IService<AasStudentCourses> {
  /**
   * 批量关联学生与课程
   *
   * @param studentIds 学生 ids
   * @param coursesIds 课程 ids
   * @return {@link Integer} 批量插入的数量
   */
  int batchRelated(Collection<Long> studentIds, Collection<Long> coursesIds);

  /**
   * 获取班级学生课程成绩
   *
   * @param dto 学生课程分页
   * @return {@link List} 班级学生课程成绩列表
   */
  RPage<StudentCoursesVO> getClassStudentCourses(StudentCoursesPageDTO dto);
  /**
   * 学生获取自己的课程信息
   *
   * @param dto 课程分页
   * @return {@link List} 学生自己的课程成绩
   */
  RPage<StudentCoursesVO> getStudentCourses(StudentCoursesPageDTO dto);

  /**
   * 修改学生的成绩
   *
   * @param dto 学生课程对象
   * @return {@link Integer} 是否修改成功
   */
  int editStudentGrades(StudentCoursesDTO dto);
}
